欢迎关注我的公众号 [极智视界],获取我的更多笔记分享
大家好,我是极智视界,本文解读一下 YOLOS 通过目标检测重新思考Vision Transformer。
Transformer 是否能够从纯序列到序列的角度,在仅有的关于二维空间结构知识的情况下,执行二维目标和区域级别的识别?为了回答这个问题,作者提出了 You Only Look at One Sequence (YOLOS),这是一系列基于普通视觉 transformer,做尽可能少的修改、区域先验以及目标任务归纳偏置的目标检测模型。作者发现,只在中等大小的 ImageNet-1k 数据集上预训练的 YOLOS 就能在具有挑战性的 COCO 目标检测基准上取得相当有竞争力的性能,如直接采用 BERT-Base 架构的 YOLOS-Base 可以在 COCO 验证集上获得 42.0 box AP。作者还讨论了通过 YOLOS 来看现有的预训练方案和模型缩放策略对 Transformer 在视觉应用中的影响。
论文地址:http://arxiv.org/abs/2106.00666
代码地址:https://github.com/hustvl/YOLOS
Transformer 是为迁移而生的。在自然语言处理 (NLP) 中,主要的方法是首先在大型通用语料库上对Transformer 进行预训练,学习通用语言表示,然后在特定的目标任务上对模型进行 fine-tune 微调。最近的 Vision Transformer (ViT) 证明,直接从 NLP 集成的规范的 Transformer 编码器架构使用视觉迁移学习方法,在大规模图像识别方面的表现惊人的好。以图像 patch 嵌入序列为输入,从纯序列到序列的角度,ViT 可以用更少的数据成功地将预训练的通用视觉表示从相当规模转移到更加具体的图像分类任务上。
由于预训练的 Transformer 可以成功地对 NLP 中的 句子级 和 token级 任务进行微调,这些任务中,在token 级产生更加细粒度的输出。一个很自然的问题是:ViT 是否能够迁移到更加具有挑战性的目标和区域级别的目标任务,如图像级别以外的目标检测?
ViT-FRCNN 是第一个将预训练的 ViT 作为 Faster R-CNN 目标检测器 backbone 的网络。然而,这种设计无法摆脱对卷积神经网络 (CNNs) 和 强二维归纳偏置的依赖,因为 ViT-FRCNN 将 ViT 的输出序列重新解释为二维空间特征映射,并依赖于区域池化算子 (如 RoIPool 或 RoIAlign) 以及基于区域的 CNN 架构 来解码 ViT 特征以进行目标和区域级别的感知。受现代 CNN 设计的启发,最近的一些工作在普通视觉 Transformer 设计中引入了金字塔特征层次、空间局域、等变和不变表示等技术,极大地提高了包括目标检测在内的密集预测任务的性能。然而,这些架构都是面向性能设计的,不能反映直接继承自 Vaswani 等人的规范视觉 Transformer 的属性。另外一些列工作,如 DETR (DEtection TRansformer) 家族,使用一个随机初始化的 Transformer 来编码和解码 CNN 的特征以用于目标检测,但这并不能揭示预训练 Transformer 的迁移能力。
直观地说,ViT 主要设计用于建模长期依赖关系和全局上下文信息,而不是局部和区域级别的关系。此外,ViT 缺乏现代 CNN 那样的层次结构来处理视觉目标尺度上的巨大变化。根据现有的依据,目前还不清楚纯 ViT 是否可以将预训练的通用视觉表示从图像级识别转移到更加复杂的二维目标检测任务上。
为了回答这个问题,作者提出了 YOLOS (You Only Look at One Sequence),这是一些列基于普通 ViT 架构的基础上,进行尽可能少的修改、区域先验以及注入目标任务归纳偏置的目标检测模型。从本质上来讲,从预训练的ViT 到 YOLOS 检测器的转换是非常简单的:(1) YOLOS 将 ViT 中用于图像分类的一个 [CLS] token 替换为用于目标检测的 100 个 [DET] tokens;(2) YOLOS 用二部匹配损失代替了 ViT 中的图像分类损失,以 Carion 等人提出的集合预测方式进行目标检测,可以避免将 ViT 的输出序列重新解释为二维特征图,也可以避免在标签分配过程中手动注入启发式和目标二维空间结构的先验知识。此外,YOLOS 的预测头可以像分类层一样紧凑、摆脱复杂多样的设计。
YOLOS 的设计目的不是成为另一个高性能的目标检测器,而是直接继承 ViT 用以揭示预训练的普通Transformer 的通用性和可迁移性。具体而言,作者的主要贡献总结如下:
(1) 作者使用中等大小的 ImageNet-1k 作为唯一的预训练数据集,并表明一个普通的 ViT 通过尽可能少的修改(YOLOS) 就可以执行复杂的目标检测任务,并能够在 COCO 基准上产生具有竞争力的结果;
(2) 作者首次证明,以一组固定大小的不重叠图像块作为输入,可以以纯序列到序列的方式完成二维目标检测;
(3) 对于普通 ViT,作者发现目标检测结果对预训练方式相当敏感,检测性能远未达到饱和。因此,提出的YOLOS 也可以作为一个具有挑战性的基准任务,以评估不同 (标签监督和自监督) 预训练策略的 ViT 性能。
在模型设计上,YOLOS 紧跟原始 ViT 架构,与 Carion 等人的思路一致,对目标检测进行了优化。YOLOS 可以很容易地适应 NLP 和计算机视觉中各种规范的 Transformer 架构。
YOLOS 模型的 overview 如图1所示。
Stem 规范的 ViT 接收一个一维序列的 embedded tokens 作为输入。为了处理二维图像输入,作者将图像展平重构为一组二维图像 patches 序列。如公式(1),得到的序列 z0 作为 YOLOS Transformer 编码器的输入。
Body YOLOS 的 body 与 ViT 基本相同,只由一堆 Transformer 编码器组成。[PATCH] tokens 和 [DET] tokens 被平等对待,它们在 Transformer 编码器层内部执行全局交互。
每个 Transformer 编码器层由一个多头自注意模块 (MSA) 和 一个 MLP 块组成,在每个块前面添加LayerNorm(LN),在每个块后面添加残差连接。MLP 包含一个隐含层,中间有 GELU 非线性激活函数,可以用公式(2) 来表示第 l-th 个 YOLOS Transformer 编码器层。
Detector Heads YOLOS 的检测头摆脱了复杂沉重的设计,变得像 ViT 的图像分类层那样简洁。分类头和bounding box 回归头都是由一个 MLP 实现的,该 MLP 具有两个单独的参数,包含两个隐含层,这两个隐含层中间有 ReLU 非线性激活函数。
Detection Token 有目的地选择随机初始化的 [DET] tokens 作为目标表示的代理,避免在标签分配中的强二维结构归纳偏置和任务先验知识。这个过程中,YOLOS 的标签分配不需要将 ViT 的输出序列重新解释为二维特征映射。理论上,只要每次输入都以相同的方式展平到一个序列,即使在不知道确切的空间结构和几何形状的情况下,YOLOS 执行任何维度的目标检测都是可行的。
Fine-tuning at Higher Resolution 在 COCO 微调时,除了用于分类和 bounding box 回归的 MLP 头和 100 个随机初始化的 [DET] tokens 之外,所有参数都由 ImageNet-1k 预训练进行权值初始化。保持 patch size P 不变,即 PxP=16x16,这将导致更大的有效序列长度。虽然 ViT 可以处理任意长度的输入序列,但位置嵌入需要适应不同长度中较长的输入序列,所以作者对预训练好的位置嵌入进行二维插值。
Inductive Bias 将归纳偏置作为最小附加注入精心设计的 YOLOS 架构。ViT 所固有的归纳偏置来自于网络主干部分的 patch 提取 以及 位置嵌入的分辨率调整。此外,YOLOS 在 ViT 上没有添加任何非退化的卷积 (如 3x3 或其他非 1x1 卷积)。从表示学习的角度来看,作者选择使用 [DET] tokens 来绑定目标进行最终预测,以避免额外的二维归纳偏置和特定于任务的启发式方法。而没有采用基于现代 CNN 结构的设计,如金字塔特征层次、二维局部空间注意力以及区域池化操作。所有这些努力都是为了以纯粹的序列到序列的方式从图像识别迁移到目标检测,在输入空间和几何知识最少的情况下,准确揭示预训练 Transformer 的通用性和可迁移性。
Comparisons with DETR YOLOS 的设计深受 DETR 的启发:YOLOS 使用在 DETR 后面的 [DET]tokens 作为目标表示的代理,以避免额外的二维归纳偏置和特定于任务的启发式方法。
与此同时,两种模型之间也存在一些关键的差异:(1) DETR 采用了 Transformer 编码器-解码器架构,而YOLOS 选择了只有编码器的 Transformer 架构;(2) DETR 只在其 CNN backbone 上进行预训练,然后让Transformer 编码器和解码器从随机初始化开始训练,而 YOLOS 继承了规范的 ViT 的预训练方式;(3) DETR 在编码后的图像特征和目标查询之间应用交叉注意力机制,并在每个解码器层深度监督辅助解码损失,而 YOLOS 则是在每个编码器层只是 Look 一个序列,在算子方面不区分 [PATCH] 标记和 [DET] 标记。
Pre-training 作者采用 Touvron 等人建议的高效数据训练策略,在 ImageNet-1k 数据集上预训练所有YOLOS/ViT 模型。参数使用截断的正态分布初始化,并使用 AdamW 进行优化,学习速率为 1x10^-3,batch size为 1024。学习速率衰减策略为 cosine,权重衰减为 0.05。数据增强使用的是由 timm 库实现的 Rand-Augment 和随机擦除。正则化使用随机深度、Mixup 和 Cutmix。
Fine-tuning 作者用类似 Carion 等人的方式在 COCO 目标检测基准上 fine-tune 所有 YOLOS 模型。所有参数都由 ImageNet-1k 预训练的权值初始化,除了用于分类和 bounding box 回归的 MLP 头 以及 随机初始化的 100 个 [DET] tokens。使用 8 块 12G 显存的 GPU 节点上训练 YOLOS,学习速率为 2.5x10^-5,batch size 大小为 8,学习率衰减策略为 cosine,权值衰减为 1x10^-4。
对于数据增强,作者使用多尺度增加,调整输入图像的大小,使最短边至少为 256、最多为 608 像素,而对于tiny 模型,最长边为 864。对于 small 和 base 模型,调整输入图像的大小,使最短边至少为 480、最多为 800 像素,最长边最多为 1333 像素。
Model Variants 有了可用的计算资源,作者研究了几种 YOLOS 变体,详细配置如表1所示。
作者研究了不同的预训练策略 (标签监督和自监督),在将 ViT (DeiT-Ti 和 DeiT-S) 从 ImageNet-1k 通过 YOLOS迁移到 COCO 目标检测基准时的影响。结果如表2、表3所示。
Necessity of Pre-training 在流行的迁移学习范式下,预训练在计算效率方面是必要的。对于 tiny 和 small 模型,作者发现与随机初始化的 COCO 训练 (从零开始训练) 相比,ImageNet-1k 的预训练节省了总的理论前向推理时间 (预训练总 FLOPs 和微调总 FLOPs)。
Label-supervised Pre-training 对于使用 ImageNet-1k 基于 ground truth 标签的预训练,作者发现不同大小的模型偏好不同的预训练调度。
Self-supervised Pre-training Transformer 在 NLP 中的成功,很大程度上得益于大规模的自监督预训练。在视觉方面,前沿的研究是在 NLP 中按照掩膜自编码范式训练自监督的 Transformer。最近的对于 siamese 网络的研究显示了有趣的特性 以及 对下游任务的良好可迁移性。作者使用表3中的 MoCo-v3 和 DINO 自监督预训练的ViT 权重,对 YOLO-S 进行了初步的迁移学习实验。
YOLOS as a Transfer Learning Benchmark for ViT 由以上的分析可以知道,ImageNet-1k 的预训练结果不能准确反映在 COCO 目标检测的迁移学习性能。与广泛使用的图像识别迁移学习基准如 CIFAR-10/100、Oxford-IIIT Pets 和 Oxford Flowers-102,YOLOS 在 COCO 上的性能对预训练方案更加敏感,性能远未达到饱和。因此,可以将 YOLOS 作为一个具有挑战性的迁移学习基准来评估不同 (标签监督或自监督) 的 ViT 预训练策略是合理的。
研究了不同模型缩放策略,如宽度缩放、均匀复合缩放和快速缩放的预训练和迁移学习能力。在预训练中,模型从 ~1.2G 扩展到了 ~4.5G FLOPs,详细的模型配置和描述见第3.1节和表1。不同尺度模型的预训练和迁移学习性能如表4。
Comparisons with Tiny-sized CNN Detectors 如表5所示,相对于成熟的、高度优化的 CNN 目标检测器,tiny 尺寸的 YOLOS 模型取得了令人印象深刻的性能。
Comparisons with DETR 如表6所示,YOLOS-Ti 仍然比对应的 DETR 的性能更加好,而宽度缩放得更大的YOLOS 模型竞争力较低:计算量较大的 YOLOS-S 比大小相近的 DETR 模型低 0.8 AP,更加糟糕的是,YOLOS-B 无法击败超过 2x 参数和 FLOPs 的 DETR。
Interpreting the Results 虽然性能看起来有些令人沮丧,但这些数字是有意义的,因为 YOLOS 并不是为了更好的性能而设计的,而是为了精确地揭示 ViT 在目标检测中的可迁移性。
Qualitative Analysis on Detection Tokens 作为一个目标检测器,YOLOS 使用 [DET] tokens 来表示检测目标。作者发现 [DET] tokens 对目标位置和大小敏感,而对目标类别不敏感,如图2和图3所示。
Detaching Detection Tokens 如表7所示,拆分 [DET] tokens 对 AP 的影响较小,这说明 [DET] tokens 主要是作为 [PATCH] tokens 的信息载体。
在本中,作者探索了在中等大小的 ImageNet-1k 数据集上预训练的普通 ViT,应用到更具挑战性的 COCO 目标检测基准上的可迁移性。作者证明,二维目标检测可以使用一个纯粹的序列到序列的方式,以最小的附加归纳偏置来完成。YOLOS 在 COCO 上性能良好,这表明 Transformer 对各种下游任务的通用性。
[1] You Only Look at One Sequence: Rethinking Transformer in Vision through Object Detection.
好了,以上解读了 YOLOS 通过目标检测重新思考Vision Transformer。希望我的分享能对你的学习有一点帮助。
《极智Paper | YOLOS 通过目标检测重新思考Vision Transformer》
搜索关注我的微信公众号【极智视界】,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !